package practice1_100;

import java.util.*;

public class Practice554 {
    public int leastBricks(List<List<Integer>> wall) {
        if(wall.size()==1&&wall.get(0).size()==1) return 1;
        if(wall.size()==1&&wall.get(0).size()>1) return 0;

        int count=0;
        for(int i=0;i<wall.get(0).size();i++){
            count+= wall.get(0).get(i);
        }
        Set<Integer> set=new HashSet<>();
        for(int j=0;j<wall.size();j++){
            int sum=0;
            for(int i=0;i<wall.get(j).size();i++){
                sum+=wall.get(j).get(i);
                if(count!=sum)set.add(sum);
            }
        }

        if(set.size()==0) return wall.size();
        int res=Integer.MAX_VALUE;
        for(Integer i:set){//总距离一个个加int i=1;i<count;i++
            int temp=0;
            for(int j=0;j<wall.size();j++){
                int colCount=0;
                for(int k=0; k<wall.get(j).size();k++){
                    colCount+=wall.get(j).get(k);
                    if(colCount>i) {temp++;break;}
                    if(colCount==i) break;
                }
            }
            res=res>temp?temp:res;
        }
        return res;
    }


    public int leastBricks1(List<List<Integer>> wall) {
        int size = wall.size();
        HashMap<Integer,Integer> hashMap=new HashMap<>();
        int countlen=0;
        for(int i=0;i<wall.get(0).size();i++){
            countlen+= wall.get(0).get(i);
        }
        for (int i = 0; i <size ; i++) {
            int count=0;
            for (int j = 0; j < wall.get(i).size(); j++) {
                count+=wall.get(i).get(j);
                if(countlen!=count)hashMap.put(count,hashMap.getOrDefault(count,0)+1);
            }
            count=0;
        }
        if(hashMap.keySet().size()==0) return size;
        int level=wall.size();
        int res=Integer.MAX_VALUE;
        for (Integer a:hashMap.keySet()) {
            res=res>(level-hashMap.get(a))?level-hashMap.get(a):res;
        }
        return res;
    }

    public static void main(String[] args) {
        LinkedList<List<Integer>> list=new LinkedList<>();
        LinkedList<Integer> list1=new LinkedList<>();
        list1.add(79);
        list1.add(9);
        list1.add(2);
        list.add(list1);
//        char[] ab="sss".toCharArray();
//        ab.
        int a= new Practice554().leastBricks1(list);
        System.out.println(a);
        StringBuffer stringBuffer=new StringBuffer();
        String s="0001";
        stringBuffer.toString();
//        stringBuffer.
        System.out.println(Integer.parseInt(s));
    }
}
